﻿#ifndef SLAVEINFOR_H
#define SLAVEINFOR_H

#include <QMainWindow>
#include <QMessageBox>

namespace Ui {
class SlaveInfor;
}

#include "Typedefine.h"
#include "Macro.h"
#include "Constant.h"

// 子机中的Header信息
#pragma pack(push, 1)
typedef struct
{
    U8 u8ImageType;           // 程序类型
    U8 u8MajorVersion;        // 主版本
    U8 u8MinorVersion;        // 次版本
    U8 u8RevisionVersion;     // 修订版本
    U16 u16ReleaseYear;       // 发布年
    U8 u8ReleaseMonth;        // 发布月
    U8 u8ReleaseDay;          // 发布日
    U8 au8ImageId[20];        // 标识符
    U32 u32ImageAddress;      // 程序地址
    U32 u32ImageSize;         // 程序大小
    U32 u32ParmAddress;       // 参数地址
    U32 u32ParmSize;          // 参数大小
    U32 u32StartupAddress;    // 启动地址
    U16 u16ImageDataCRC;      // 数据校验
    U16 u16ImageHeaderCRC;    // 头信息校验
} ImageHeader_ts;

#pragma pack(pop)

#define U16_IMAGEHEADER_OFFSET      ((U16) 0x0000)
#define U8_IMAGEHEADER_SIZE         ((U8)  sizeof(ImageHeader_ts))



class SlaveInfor : public QMainWindow
{
    Q_OBJECT

public:
    explicit SlaveInfor(QWidget *parent = nullptr);
    ~SlaveInfor();
    void SlaveInfor_ClearSlaveSWLable(void);
    void SlaveInfor_ClearSlaveSWVer(void);
    void SlaveInfor_SetSlaveName(QString strName);
    void SlaveInfor_SetSlaveLable(QString strLable);
    void SlaveInfor_SetSlaveVer(QString strVer);
    void SlaveInfor_SetSlaveNum(QString strNum);
    bool CheckSWVerIsLegal(QString strSWVer);
    bool CheckSWLableIsLegal(QString strSWLable);

signals:
    void SendSlaveInfor(QString,QString); //传递数据的信号

private slots:
    void on_Btn_Reset_clicked();

    void on_Btn_Save_clicked();

    void on_Btn_Close_clicked();

private:
    Ui::SlaveInfor *ui;
    QMessageBox *MsgDlg;
};

#endif // SLAVEINFOR_H
